package com.dcjt.firehotcarpad.widget;

import android.content.Context;
import android.graphics.Point;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class CSIISpinner  extends androidx.appcompat.widget.AppCompatSpinner {

    public CSIISpinner(Context context) {
        super(context);
    }

    public CSIISpinner(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CSIISpinner(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    private boolean isMoved = false;
    private Point touchedPoint = new Point();

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int x = (int) event.getRawX();
        int y = (int) event.getRawY();
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN :
                touchedPoint.x = x;
                touchedPoint.y = y;
                break;
            case MotionEvent.ACTION_MOVE :
                isMoved = true;
                break;
            case MotionEvent.ACTION_UP :
                if (isMoved) {
                    // 从上向下滑动
                    if (y - touchedPoint.y > 20) {
                    }
                    // 从下向上滑动
                    else if (touchedPoint.y - y > 20) {
                    }
                    // 滑动幅度小时，当作点击事件
                    else {
                        onClick();
                    }
                    isMoved = false;
                } else {
                    onClick();
                }
                break;
            default :
                break;
        }
        return true;
    }

    private void onClick() {
        if (OnClickListener != null && isEnabled()) {
            OnClickListener.onClick();
        }
    }

    private OnClickListener OnClickListener;

    /**
     * 注册自定义的点击事件监听
     *
     * @param OnClickListener
     */
    public void setOnClickListener(OnClickListener OnClickListener) {
        this.OnClickListener = OnClickListener;
    }

    /**
     * 自定义点击事件监听.
     */
    public interface OnClickListener {
        public void onClick();
    }
}
